package extend3;
/*
    1. 每一个构造方法的第一句都隐藏着 super();
        super(): 调用父类的无参构造
    2. super()类似语句必须是构造方法的第一句有效代码
    3. 一个构造方法内只可以使用一次super()类似代码
    4. 除了有super()之外还有super(实参),this(),this(实参)
        super():调用本类父类无参构造
        super(实参): 调用本类父类有参构造
        this():调用本类的无参构造
        this(实参):调用本类的有参构造
    5. 如果说你使用了 super(实参) ,this()  ,this(实参)中的任何一个,默认赠送的super()就不送
    6. 在子类的构造方法中调用其他构造方法,必须有一个构造中是去加载父类!!

 */
public class Demo {
    public static void main(String[] args) {
        Zi zi = new Zi();
    }
}
class Fu{

    public Fu(){
        super();
        System.out.println("父类的无参构造执行了~");//1
    }

    public Fu(int num){
        this();
        System.out.println("父类的"+num+"参构造执行了~");//2
    }
}

class Zi extends Fu{
    public Zi(){
        this("hello");
        System.out.println("子类的无参构造执行了~" );//4
    }

    public Zi(String str){
        super(100);
        System.out.println("子类的"+str+"参构造执行了~");//3
    }
}
